DateTimeFormatter Class

Java Technologies - জাভা টাইম প্যাকেজ (Java.time Package)
137
137

DateTimeFormatter ক্লাসটি java.time প্যাকেজের একটি গুরুত্বপূর্ণ অংশ যা তারিখ এবং সময়ের ফরম্যাটিং এবং পার্সিং এর জন্য ব্যবহৃত হয়। এটি ISO 8601 স্ট্যান্ডার্ডসহ অনেক ধরণের ফরম্যাট সমর্থন করে, এবং আপনি সহজেই স্ট্রিং থেকে তারিখ/সময় তৈরি করতে পারেন, অথবা তারিখ/সময়কে স্ট্রিং-এ রূপান্তর করতে পারেন।

DateTimeFormatter ক্লাসের মূল ফিচারসমূহ:

  • এটি LocalDate, LocalTime, LocalDateTime, ZonedDateTime, Instant সহ বিভিন্ন টাইম ক্লাসের জন্য ফরম্যাটিং এবং পার্সিং সমর্থন করে।
  • DateTimeFormatter ব্যবহার করে আপনি কাস্টম তারিখ এবং সময় ফরম্যাট তৈরি করতে পারেন, যেমন yyyy-MM-dd HH:mm:ss বা dd/MM/yyyy.

DateTimeFormatter ব্যবহার করে তারিখ এবং সময় ফরম্যাট করা:

1. DateTimeFormatter এর সাথে LocalDate ফরম্যাটিং:

LocalDate (যা শুধুমাত্র তারিখ ধারণ করে, সময় নয়) ফরম্যাট করার জন্য DateTimeFormatter ব্যবহার করা যায়।

import java.time.*;
import java.time.format.DateTimeFormatter;

public class DateTimeFormatterExample {
    public static void main(String[] args) {
        // Create a LocalDate instance
        LocalDate date = LocalDate.now();
        System.out.println("Original Date: " + date);
        
        // Create a DateTimeFormatter with a custom pattern
        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("dd/MM/yyyy");
        
        // Format the LocalDate using the DateTimeFormatter
        String formattedDate = date.format(formatter);
        System.out.println("Formatted Date: " + formattedDate);
    }
}

আউটপুট:

Original Date: 2024-12-23
Formatted Date: 23/12/2024

ব্যাখ্যা:

  • DateTimeFormatter.ofPattern("dd/MM/yyyy"): এই প্যাটার্নটি দিন/মাস/বছর ফরম্যাটে তারিখ প্রিন্ট করবে।
  • date.format(formatter): এই মেথডটি LocalDate অবজেক্টটিকে নির্দিষ্ট ফরম্যাটে স্ট্রিংয়ে রূপান্তরিত করে।

2. DateTimeFormatter এর সাথে LocalTime ফরম্যাটিং:

এখানে LocalTime (যা সময়ের মান ধারণ করে) ফরম্যাট করার উদাহরণ দেখানো হয়েছে।

import java.time.*;
import java.time.format.DateTimeFormatter;

public class TimeFormattingExample {
    public static void main(String[] args) {
        // Create a LocalTime instance
        LocalTime time = LocalTime.now();
        System.out.println("Original Time: " + time);
        
        // Create a DateTimeFormatter with a custom pattern for time
        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("hh:mm a");
        
        // Format the LocalTime using the DateTimeFormatter
        String formattedTime = time.format(formatter);
        System.out.println("Formatted Time: " + formattedTime);
    }
}

আউটপুট:

Original Time: 14:35:20.345
Formatted Time: 02:35 PM

ব্যাখ্যা:

  • hh:mm a: এই প্যাটার্নটি ঘণ্টা:মিনিট AM/PM ফরম্যাটে সময় প্রিন্ট করবে।
  • time.format(formatter): LocalTime অবজেক্টটি নির্দিষ্ট ফরম্যাটে স্ট্রিংয়ে রূপান্তরিত করে।

3. DateTimeFormatter এর সাথে LocalDateTime ফরম্যাটিং:

LocalDateTime একটি তারিখ এবং সময়ের সমন্বয়, এবং এর ফরম্যাটিংও DateTimeFormatter দ্বারা করা যেতে পারে।

import java.time.*;
import java.time.format.DateTimeFormatter;

public class DateTimeFormatterLocalDateTimeExample {
    public static void main(String[] args) {
        // Create a LocalDateTime instance
        LocalDateTime dateTime = LocalDateTime.now();
        System.out.println("Original DateTime: " + dateTime);
        
        // Create a DateTimeFormatter with a custom pattern
        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("dd MMMM yyyy HH:mm:ss");
        
        // Format the LocalDateTime using the DateTimeFormatter
        String formattedDateTime = dateTime.format(formatter);
        System.out.println("Formatted DateTime: " + formattedDateTime);
    }
}

আউটপুট:

Original DateTime: 2024-12-23T14:35:20.345
Formatted DateTime: 23 December 2024 14:35:20

ব্যাখ্যা:

  • dd MMMM yyyy HH:mm:ss: এখানে, dd (দিন), MMMM (মাসের নাম), yyyy (বছর), HH:mm:ss (ঘণ্টা:মিনিট:সেকেন্ড) ফরম্যাটে তারিখ এবং সময় প্রদর্শিত হয়েছে।
  • dateTime.format(formatter): LocalDateTime অবজেক্টটি এই নির্দিষ্ট ফরম্যাটে স্ট্রিংয়ে রূপান্তরিত করেছে।

4. DateTimeFormatter এর মাধ্যমে ZonedDateTime ফরম্যাটিং:

ZonedDateTime ব্যবহার করে বিশ্বের বিভিন্ন সময় অঞ্চল অনুযায়ী সময় এবং তারিখের মান পাওয়া এবং ফরম্যাটিং করা যায়।

import java.time.*;
import java.time.format.DateTimeFormatter;

public class ZonedDateTimeFormatterExample {
    public static void main(String[] args) {
        // Create a ZonedDateTime instance
        ZonedDateTime zonedDateTime = ZonedDateTime.now();
        System.out.println("Original ZonedDateTime: " + zonedDateTime);
        
        // Create a DateTimeFormatter with a custom pattern for ZonedDateTime
        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("dd/MM/yyyy HH:mm:ss z");
        
        // Format the ZonedDateTime using the DateTimeFormatter
        String formattedZonedDateTime = zonedDateTime.format(formatter);
        System.out.println("Formatted ZonedDateTime: " + formattedZonedDateTime);
    }
}

আউটপুট:

Original ZonedDateTime: 2024-12-23T14:35:20.345+05:30[Asia/Kolkata]
Formatted ZonedDateTime: 23/12/2024 14:35:20 IST

ব্যাখ্যা:

  • dd/MM/yyyy HH:mm:ss z: এখানে z দ্বারা সময়ের অঞ্চল (যেমন: IST, GMT) নির্দিষ্ট করা হয়েছে। এটি ZonedDateTime-কে ফরম্যাট করে দিন/মাস/বছর, ঘণ্টা:মিনিট:সেকেন্ড এবং সময় অঞ্চল হিসাবে দেখাচ্ছে।
  • z: সময় অঞ্চলের নাম (যেমন Asia/Kolkata, GMT, UTC ইত্যাদি) প্রদান করে।

DateTimeFormatter Class-এর বিভিন্ন ফরম্যাটের উদাহরণ:

  1. ISO_LOCAL_DATE: 2024-12-23 (ফরম্যাট: yyyy-MM-dd)
  2. ISO_LOCAL_TIME: 14:35:20.345 (ফরম্যাট: HH:mm:ss.SSS)
  3. ISO_LOCAL_DATE_TIME: 2024-12-23T14:35:20.345 (ফরম্যাট: yyyy-MM-dd'T'HH:mm:ss.SSS)
  4. ISO_ZONED_DATE_TIME: 2024-12-23T14:35:20.345+05:30[Asia/Kolkata] (ফরম্যাট: yyyy-MM-dd'T'HH:mm:ss.SSSXXX[ZoneId])

DateTimeFormatter ক্লাস Java 8 এর একটি অত্যন্ত শক্তিশালী টুল, যা Date and Time API এর মাধ্যমে তারিখ ও সময়ের ফরম্যাটিং এবং পার্সিং সহজতর করে তোলে। আপনি LocalDate, LocalTime, LocalDateTime, ZonedDateTime ইত্যাদি টাইম ক্লাসের জন্য কাস্টম ফরম্যাট তৈরি করতে পারেন এবং প্রয়োজনে সেগুলো স্ট্রিং-এ রূপান্তর করতে পারেন। DateTimeFormatter এর সাহায্যে আপনি সময় অঞ্চলের নাম, 24-ঘণ্টার ফরম্যাট, 12-ঘণ্টার AM/PM ফরম্যাটসহ বিভিন্ন ফরম্যাটের মধ্যে তারিখ এবং সময়ের মান পেতে পারেন।

Content added By

DateTimeFormatter কি এবং কিভাবে কাজ করে?

126
126

DateTimeFormatter ক্লাসটি java.time.format প্যাকেজের একটি অংশ যা Java 8 থেকে শুরু হয়েছে। এটি Date এবং Time এর জন্য একটি ফরম্যাটিং এবং পার্সিং টুল সরবরাহ করে, যা তারিখ এবং সময়কে নির্দিষ্ট ফরম্যাটে রূপান্তর (format) বা পাঠ (parse) করতে ব্যবহৃত হয়।

DateTimeFormatter কী?

DateTimeFormatter হল একটি ক্লাস যা ব্যবহারকারীদের LocalDate, LocalTime, LocalDateTime, ZonedDateTime ইত্যাদি তারিখ এবং সময় ক্লাসগুলোকে নির্দিষ্ট ফরম্যাটে রূপান্তর করতে সহায়তা করে। এর মাধ্যমে আপনি সহজেই তারিখ এবং সময়ের মানকে String এ রূপান্তর করতে পারেন অথবা String থেকে DateTime অবজেক্টে রূপান্তর করতে পারেন।

DateTimeFormatter এর কাজ:

  • Format: এটি একটি DateTime অবজেক্টকে String এ রূপান্তর করে।
  • Parse: এটি একটি String থেকে DateTime অবজেক্টে রূপান্তর করে।

DateTimeFormatter তৈরি করার উপায়:

  1. Predefined Formatters:
    • DateTimeFormatter.ISO_LOCAL_DATE, DateTimeFormatter.ISO_LOCAL_TIME, DateTimeFormatter.ISO_LOCAL_DATE_TIME ইত্যাদি পূর্বনির্ধারিত ফরম্যাট ব্যবহার করা যায়।
  2. Custom Formatters:
    • আপনি কাস্টম ফরম্যাটও তৈরি করতে পারেন যেমন yyyy-MM-dd HH:mm:ss অথবা dd/MM/yyyy.

DateTimeFormatter এর ব্যবহার উদাহরণ:

1. তারিখ এবং সময় ফরম্যাটিং (Formatting DateTime)

import java.time.*;
import java.time.format.DateTimeFormatter;

public class DateTimeFormatterExample {
    public static void main(String[] args) {
        // বর্তমান তারিখ এবং সময়
        LocalDateTime currentDateTime = LocalDateTime.now();
        System.out.println("Current DateTime: " + currentDateTime);

        // Custom DateTime Formatter
        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
        String formattedDateTime = currentDateTime.format(formatter);
        System.out.println("Formatted DateTime: " + formattedDateTime);
    }
}

আউটপুট:

Current DateTime: 2024-12-23T15:45:30.123
Formatted DateTime: 2024-12-23 15:45:30

ব্যাখ্যা:

  • DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"): এটি একটি কাস্টম ফরম্যাটার তৈরি করে, যা তারিখ এবং সময়কে yyyy-MM-dd HH:mm:ss ফরম্যাটে রূপান্তর করবে।
  • format() মেথডটি LocalDateTime অবজেক্টটিকে একটি String ফরম্যাটে রূপান্তর করে।

2. String থেকে DateTime Parsing (DateTime Parsing)

এখন, ধরুন আপনি একটি তারিখ এবং সময়ের স্ট্রিং পাবেন এবং সেই স্ট্রিংটি একটি DateTime অবজেক্টে রূপান্তর করতে চান।

import java.time.*;
import java.time.format.DateTimeFormatter;

public class DateTimeParsingExample {
    public static void main(String[] args) {
        // String format date
        String dateTimeString = "2024-12-23 15:45:30";

        // Custom DateTime Formatter for parsing
        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");

        // Parse the string into LocalDateTime
        LocalDateTime parsedDateTime = LocalDateTime.parse(dateTimeString, formatter);
        System.out.println("Parsed DateTime: " + parsedDateTime);
    }
}

আউটপুট:

Parsed DateTime: 2024-12-23T15:45:30

ব্যাখ্যা:

  • DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"): একইভাবে এখানে একটি কাস্টম ফরম্যাটার তৈরি করা হয়েছে।
  • parse() মেথডটি স্ট্রিংটি একটি LocalDateTime অবজেক্টে রূপান্তরিত করে।

3. Standard Formatters:

Java-তে কিছু standard formatters রয়েছে যেগুলো ISO 8601 স্ট্যান্ডার্ড অনুসরণ করে এবং সহজেই ব্যবহৃত হতে পারে।

import java.time.*;
import java.time.format.DateTimeFormatter;

public class StandardDateTimeFormatter {
    public static void main(String[] args) {
        // Get the current date and time
        ZonedDateTime zonedDateTime = ZonedDateTime.now();
        System.out.println("Current ZonedDateTime: " + zonedDateTime);

        // Use ISO standard formatter
        DateTimeFormatter isoFormatter = DateTimeFormatter.ISO_ZONED_DATE_TIME;
        String formattedDateTime = zonedDateTime.format(isoFormatter);
        System.out.println("Formatted ZonedDateTime (ISO): " + formattedDateTime);
    }
}

আউটপুট:

Current ZonedDateTime: 2024-12-23T15:45:30.123+05:30[Asia/Kolkata]
Formatted ZonedDateTime (ISO): 2024-12-23T15:45:30.123+05:30[Asia/Kolkata]

ব্যাখ্যা:

  • DateTimeFormatter.ISO_ZONED_DATE_TIME: এটি ISO স্ট্যান্ডার্ড অনুযায়ী ZonedDateTime ফরম্যাট করে।

কাস্টম ফরম্যাটিং (Custom Formatting) উদাহরণ:

import java.time.*;
import java.time.format.DateTimeFormatter;

public class CustomDateTimeFormatter {
    public static void main(String[] args) {
        // বর্তমান তারিখ এবং সময়
        LocalDateTime currentDateTime = LocalDateTime.now();

        // কাস্টম ফরম্যাট ব্যবহার
        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("dd-MM-yyyy HH:mm:ss");
        String formattedDateTime = currentDateTime.format(formatter);

        // আউটপুট
        System.out.println("Formatted DateTime: " + formattedDateTime);
    }
}

আউটপুট:

Formatted DateTime: 23-12-2024 15:45:30

DateTimeFormatter এর প্রধান ফরম্যাটিং প্যাটার্ন:

  • yyyy: ৪ অঙ্কের বছর (যেমন: 2024)
  • MM: মাস (যেমন: 12)
  • dd: দিন (যেমন: 23)
  • HH: ঘণ্টা (24 ঘণ্টার ফরম্যাট)
  • mm: মিনিট
  • ss: সেকেন্ড
  • SSS: মিলিসেকেন্ড
  • z: সময় অঞ্চল (যেমন: UTC, PST)

DateTimeFormatter একটি শক্তিশালী ক্লাস যা Java 8 থেকে তারিখ এবং সময়ের ফরম্যাটিং এবং পার্সিংয়ের জন্য ব্যবহৃত হয়। আপনি কাস্টম এবং স্ট্যান্ডার্ড ফরম্যাটে তারিখ এবং সময়ের মান রূপান্তর করতে পারেন। এটি ব্যবহারে আপনি তারিখ এবং সময়ের মানকে পাঠযোগ্য স্ট্রিংয়ে রূপান্তর করতে পারেন এবং স্ট্রিং থেকে তারিখ বা সময়ও পুনরুদ্ধার করতে পারেন, যা Java Time API কে আরও শক্তিশালী এবং কার্যকরী করে তোলে।

Content added By

Predefined এবং Custom Formats

120
120

java.time প্যাকেজটি Java 8 এ যোগ করা হয়েছে এবং এটি তারিখ, সময় এবং সম্পর্কিত কাজগুলির জন্য একটি শক্তিশালী API সরবরাহ করে। এর মধ্যে Instant ক্লাস এবং PredefinedCustom Date-Time Formats এর ব্যবহার খুবই গুরুত্বপূর্ণ। চলুন একে একে আলোচনা করি।

1. Instant Class ব্যবহার:

Instant ক্লাসটি UTC (Coordinated Universal Time) এর একটি নির্দিষ্ট মুহূর্তকে প্রতিনিধিত্ব করে। এটি epoch time (1970-01-01T00:00:00Z) থেকে সেকেন্ড এবং ন্যানোসেকেন্ডের হিসেবে সময় মাপতে ব্যবহৃত হয়।

Instant ব্যবহার করা হয় যখন আপনার টাইমস্ট্যাম্প বা সঠিক সময় পয়েন্ট প্রয়োজন হয়।

Instant ক্লাসের প্রধান মেথডসমূহ:

  • Instant.now(): এটি বর্তমান Instant ফেরত দেয়, অর্থাৎ বর্তমান UTC সময়।
  • Instant.ofEpochSecond(long epochSecond): এটি একটি নির্দিষ্ট epoch সেকেন্ড থেকে Instant তৈরি করে।
  • Instant.ofEpochMilli(long epochMilli): এটি মিলিসেকেন্ডে একটি নির্দিষ্ট epoch সময় থেকে Instant তৈরি করে।
  • toEpochMilli(): এটি Instant কে মিলিসেকেন্ডের মধ্যে epoch time হিসেবে রিটার্ন করে।

Instant ক্লাসের উদাহরণ:

import java.time.Instant;

public class InstantExample {
    public static void main(String[] args) {
        // Get the current instant (UTC time)
        Instant currentInstant = Instant.now();
        System.out.println("Current Instant: " + currentInstant);

        // Convert an epoch second to Instant
        Instant instantFromEpoch = Instant.ofEpochSecond(1620830325);
        System.out.println("Instant from Epoch Second: " + instantFromEpoch);

        // Convert an epoch millisecond to Instant
        Instant instantFromEpochMilli = Instant.ofEpochMilli(1620830325000L);
        System.out.println("Instant from Epoch Millisecond: " + instantFromEpochMilli);

        // Convert Instant to epoch milliseconds
        long epochMilli = currentInstant.toEpochMilli();
        System.out.println("Epoch Milliseconds: " + epochMilli);
    }
}

আউটপুট:

Current Instant: 2024-12-23T10:30:45.123Z
Instant from Epoch Second: 2021-05-12T12:45:25Z
Instant from Epoch Millisecond: 2021-05-12T12:45:25Z
Epoch Milliseconds: 1634316745123

ব্যাখ্যা:

  • Instant.now(): এটি বর্তমান সময় Instant (UTC) ফেরত দেয়।
  • Instant.ofEpochSecond(long epochSecond): এটি নির্দিষ্ট epoch সেকেন্ড থেকে Instant তৈরি করে।
  • Instant.ofEpochMilli(long epochMilli): এটি মিলিসেকেন্ডে নির্দিষ্ট epoch সময় থেকে Instant তৈরি করে।
  • toEpochMilli(): এটি Instant কে মিলিসেকেন্ডে epoch টাইমে রূপান্তরিত করে।

2. Predefined এবং Custom Formats ব্যবহার:

java.time.format.DateTimeFormatter ক্লাসটি তারিখ এবং সময়ের মান প্রদর্শন এবং পার্স করার জন্য ব্যবহৃত হয়। এটি Predefined এবং Custom Formats সাপোর্ট করে।

Predefined Formats:

Java-তে কিছু predefined formats রয়েছে যা ISO স্ট্যান্ডার্ড অনুসরণ করে।

  • ISO_LOCAL_DATE: YYYY-MM-DD (যেমন: 2024-12-23)
  • ISO_LOCAL_TIME: HH:mm:ss (যেমন: 14:30:00)
  • ISO_LOCAL_DATE_TIME: YYYY-MM-DDTHH:mm:ss (যেমন: 2024-12-23T14:30:00)
  • ISO_ZONED_DATE_TIME: 2024-12-23T14:30:00+05:30[Asia/Kolkata]

Custom Formats:

কাস্টম ফরম্যাট তৈরি করতে আপনি DateTimeFormatter.ofPattern("pattern") ব্যবহার করতে পারেন, যেখানে আপনি pattern দিয়ে নিজের ইচ্ছেমতো ফরম্যাট সাজাতে পারেন।

Predefined Format উদাহরণ:

import java.time.*;
import java.time.format.DateTimeFormatter;

public class PredefinedFormatExample {
    public static void main(String[] args) {
        LocalDate date = LocalDate.now();
        LocalTime time = LocalTime.now();
        LocalDateTime dateTime = LocalDateTime.now();

        // ISO Predefined Formats
        System.out.println("ISO_LOCAL_DATE: " + date.format(DateTimeFormatter.ISO_LOCAL_DATE));
        System.out.println("ISO_LOCAL_TIME: " + time.format(DateTimeFormatter.ISO_LOCAL_TIME));
        System.out.println("ISO_LOCAL_DATE_TIME: " + dateTime.format(DateTimeFormatter.ISO_LOCAL_DATE_TIME));
    }
}

আউটপুট:

ISO_LOCAL_DATE: 2024-12-23
ISO_LOCAL_TIME: 14:30:00
ISO_LOCAL_DATE_TIME: 2024-12-23T14:30:00

Custom Format উদাহরণ:

import java.time.*;
import java.time.format.DateTimeFormatter;

public class CustomFormatExample {
    public static void main(String[] args) {
        LocalDateTime dateTime = LocalDateTime.now();

        // Custom DateTime format
        DateTimeFormatter customFormatter = DateTimeFormatter.ofPattern("dd MMMM yyyy HH:mm:ss");
        String formattedDateTime = dateTime.format(customFormatter);

        System.out.println("Formatted DateTime: " + formattedDateTime);
    }
}

আউটপুট:

Formatted DateTime: 23 December 2024 14:30:00

ব্যাখ্যা:

  • Predefined Format: আপনি DateTimeFormatter.ISO_LOCAL_DATE অথবা অন্যান্য predefined ফরম্যাট ব্যবহার করে সহজেই ISO স্ট্যান্ডার্ড অনুসরণ করা ফরম্যাট পেতে পারেন।
  • Custom Format: আপনি DateTimeFormatter.ofPattern("pattern") ব্যবহার করে নিজের কাস্টম ফরম্যাট তৈরি করতে পারেন। এখানে "dd MMMM yyyy HH:mm:ss" ফরম্যাটে দিন, মাস, বছর, ঘণ্টা, মিনিট এবং সেকেন্ড প্রদর্শন করা হয়েছে।

Pattern Syntax:

  • d: দিন (1-31)
  • M: মাস (1-12)
  • y: বছর
  • H: ঘণ্টা (0-23)
  • m: মিনিট (0-59)
  • s: সেকেন্ড (0-59)
  • a: AM/PM
  • z: সময় অঞ্চল

  • Instant ক্লাসটি UTC সময়ের একটি নির্দিষ্ট মুহূর্ত সংরক্ষণ করে এবং বিভিন্ন সময় সিস্টেমের মধ্যে কনভার্ট করতে ব্যবহৃত হয়।
  • DateTimeFormatter ব্যবহার করে আপনি Predefined এবং Custom তারিখ এবং সময় ফরম্যাট তৈরি ও প্রয়োগ করতে পারেন।
  • Predefined Formats যেমন ISO_LOCAL_DATE, ISO_LOCAL_TIME এবং ISO_LOCAL_DATE_TIME ব্যবহার করে আপনি সহজে ISO স্ট্যান্ডার্ড অনুযায়ী তারিখ ও সময় ফরম্যাট করতে পারেন।
  • Custom Formats দিয়ে আপনি নির্দিষ্ট প্যাটার্নে তারিখ এবং সময় ফরম্যাট করতে পারেন।

এটি Java 8+ তে তারিখ, সময় এবং টাইমস্ট্যাম্পের কাজ করার জন্য একটি অত্যন্ত শক্তিশালী এবং কার্যকরী API।

Content added By

LocalDate, LocalTime, এবং ZonedDateTime ফরম্যাটিং

77
77

java.time প্যাকেজটি Java 8 থেকে পরিচিত এবং এটি তারিখ, সময় এবং সময় অঞ্চলের সাথে সম্পর্কিত কাজ সহজভাবে করার জন্য আধুনিক API প্রদান করে। এর মধ্যে LocalDate, LocalTime, এবং ZonedDateTime ক্লাসগুলি বেশ গুরুত্বপূর্ণ, কারণ এগুলি আপনার কাজের সময় এবং তারিখ সম্পর্কিত বিভিন্ন কাজ করতে সাহায্য করে। এই ক্লাসগুলোকে আপনি ফরম্যাটিং এবং পার্সিং করতে পারেন যেভাবে আপনি চান, যাতে ব্যবহারকারীর জন্য সহজ এবং মানব-পঠনযোগ্য ফরম্যাট তৈরি করা যায়।

LocalDate, LocalTime, এবং ZonedDateTime ফরম্যাটিং:

Java তে ফরম্যাটিং করার জন্য DateTimeFormatter ক্লাসটি ব্যবহৃত হয়। এই ক্লাসটি আপনার তারিখ এবং সময়ের অবজেক্টকে স্ট্রিং এ রূপান্তরিত (format) এবং স্ট্রিং থেকে তারিখ বা সময় অবজেক্টে রূপান্তরিত (parse) করতে সাহায্য করে।

1. LocalDate ফরম্যাটিং:

LocalDate শুধু তারিখ (দিন, মাস, বছর) ধারণ করে এবং এটি সময় সম্পর্কিত কোনো তথ্য ধারণ করে না।

LocalDate ফরম্যাটিং উদাহরণ:

import java.time.LocalDate;
import java.time.format.DateTimeFormatter;

public class LocalDateFormattingExample {
    public static void main(String[] args) {
        // Create a LocalDate object
        LocalDate date = LocalDate.now(); // Current date
        
        // Define a custom date format
        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("dd/MM/yyyy");
        
        // Format the date to a string
        String formattedDate = date.format(formatter);
        System.out.println("Formatted LocalDate: " + formattedDate);  // Example: 23/12/2024
    }
}

ব্যাখ্যা:

  • DateTimeFormatter.ofPattern("dd/MM/yyyy"): এখানে "dd/MM/yyyy" হল কাস্টম ফরম্যাট, যেখানে dd দিন, MM মাস, এবং yyyy বছর নির্দেশ করে।
  • date.format(formatter): LocalDate অবজেক্টটিকে ফরম্যাট করে স্ট্রিং রূপে রূপান্তরিত করা হচ্ছে।

আউটপুট:

Formatted LocalDate: 23/12/2024

2. LocalTime ফরম্যাটিং:

LocalTime ক্লাসটি সময় (ঘণ্টা, মিনিট, সেকেন্ড, ন্যানোসেকেন্ড) ধারণ করে, তবে এটি তারিখ বা সময় অঞ্চল সম্পর্কিত কোনো তথ্য ধারণ করে না।

LocalTime ফরম্যাটিং উদাহরণ:

import java.time.LocalTime;
import java.time.format.DateTimeFormatter;

public class LocalTimeFormattingExample {
    public static void main(String[] args) {
        // Create a LocalTime object
        LocalTime time = LocalTime.now(); // Current time
        
        // Define a custom time format
        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("HH:mm:ss");
        
        // Format the time to a string
        String formattedTime = time.format(formatter);
        System.out.println("Formatted LocalTime: " + formattedTime);  // Example: 14:35:20
    }
}

ব্যাখ্যা:

  • DateTimeFormatter.ofPattern("HH:mm:ss"): "HH:mm:ss" কাস্টম ফরম্যাট যেখানে HH ঘণ্টা (২৪ ঘণ্টা ফরম্যাটে), mm মিনিট, এবং ss সেকেন্ড।
  • time.format(formatter): LocalTime অবজেক্টটিকে স্ট্রিং রূপে রূপান্তরিত করা হচ্ছে।

আউটপুট:

Formatted LocalTime: 14:35:20

3. ZonedDateTime ফরম্যাটিং:

ZonedDateTime ক্লাসটি তারিখ, সময় এবং সময় অঞ্চল সম্পর্কিত তথ্য ধারণ করে। এটি নির্দিষ্ট সময় অঞ্চলে বর্তমান সময়ের স্ট্রিং তৈরি করতে ব্যবহৃত হয়।

ZonedDateTime ফরম্যাটিং উদাহরণ:

import java.time.ZonedDateTime;
import java.time.format.DateTimeFormatter;
import java.time.ZoneId;

public class ZonedDateTimeFormattingExample {
    public static void main(String[] args) {
        // Create a ZonedDateTime object for a specific time zone
        ZonedDateTime zonedDateTime = ZonedDateTime.now(ZoneId.of("Asia/Kolkata"));
        
        // Define a custom date-time format
        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss z");
        
        // Format the ZonedDateTime to a string
        String formattedDateTime = zonedDateTime.format(formatter);
        System.out.println("Formatted ZonedDateTime: " + formattedDateTime);  // Example: 2024-12-23 14:35:20 IST
    }
}

ব্যাখ্যা:

  • ZoneId.of("Asia/Kolkata"): এটি Asia/Kolkata টাইম জোনের জন্য বর্তমান সময় সেট করে।
  • DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss z"): এখানে "yyyy-MM-dd HH:mm:ss z" কাস্টম ফরম্যাটে ফরম্যাটিং করা হচ্ছে, যেখানে z সময় অঞ্চল প্রতিনিধিত্ব করে।

আউটপুট:

Formatted ZonedDateTime: 2024-12-23 14:35:20 IST

4. ZonedDateTime Parse থেকে DateTime Format Conversion:

এখন আপনি যদি একটি স্ট্রিং থেকে ZonedDateTime তৈরি করতে চান এবং সেটা অন্য ফরম্যাটে রূপান্তর করতে চান, তাহলে আপনি DateTimeFormatter.parse() এবং ZonedDateTime.format() ব্যবহার করতে পারেন।

ZonedDateTime Parse থেকে DateTime Format Conversion উদাহরণ:

import java.time.ZonedDateTime;
import java.time.format.DateTimeFormatter;
import java.time.ZoneId;

public class ZonedDateTimeParseExample {
    public static void main(String[] args) {
        // Define a date-time string with a specific format
        String dateTimeString = "2024-12-23 14:35:20 IST";
        
        // Define the formatter with the same pattern as the string
        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss z");
        
        // Parse the string to ZonedDateTime
        ZonedDateTime parsedDateTime = ZonedDateTime.parse(dateTimeString, formatter);
        System.out.println("Parsed ZonedDateTime: " + parsedDateTime);
        
        // Convert parsed ZonedDateTime to a different format
        DateTimeFormatter newFormatter = DateTimeFormatter.ofPattern("dd/MM/yyyy HH:mm:ss z");
        String formattedDateTime = parsedDateTime.format(newFormatter);
        System.out.println("Formatted ZonedDateTime: " + formattedDateTime);
    }
}

আউটপুট:

Parsed ZonedDateTime: 2024-12-23T14:35:20+05:30[Asia/Kolkata]
Formatted ZonedDateTime: 23/12/2024 14:35:20 IST
  • LocalDate, LocalTime, এবং ZonedDateTime ক্লাসগুলো Java 8 এর একটি শক্তিশালী অংশ যা সময় এবং তারিখ সম্পর্কিত কার্যক্রমের জন্য ব্যবহৃত হয়।
  • DateTimeFormatter ব্যবহার করে আপনি সহজেই ফরম্যাটিং এবং পার্সিং করতে পারেন।
  • ZonedDateTime এর মাধ্যমে সময় অঞ্চল সম্পর্কিত তারিখ এবং সময়কে ভালোভাবে পরিচালনা করা যায় এবং এটি ISO 8601 ফরম্যাট অনুসরণ করে।
  • এই ফরম্যাটিং সুবিধা আপনাকে বিশ্বের বিভিন্ন টাইম জোনে সময় সম্পর্কিত কাজ সহজে করতে সাহায্য করবে।
Content added By

উদাহরণ সহ DateTimeFormatter ব্যবহার

100
100

DateTimeFormatter একটি ক্লাস যা java.time প্যাকেজে অন্তর্ভুক্ত এবং এটি তারিখ এবং সময়ের তথ্য ফরম্যাট করার জন্য ব্যবহৃত হয়। এর মাধ্যমে আপনি LocalDateTime, LocalDate, LocalTime, ZonedDateTime ইত্যাদি তারিখ ও সময় অবজেক্টগুলোকে একটি নির্দিষ্ট ফরম্যাটে রূপান্তর করতে পারেন এবং ফরম্যাটকৃত স্ট্রিং পার্স (parse) করতে পারেন।

DateTimeFormatter একটি খুবই শক্তিশালী টুল যা আপনাকে ISO স্ট্যান্ডার্ড ছাড়াও আপনার নিজের প্রয়োজন অনুযায়ী কাস্টম তারিখ এবং সময় ফরম্যাট তৈরি করতে সহায়তা করে।

DateTimeFormatter ব্যবহার:

  1. DateTimeFormatter দিয়ে তারিখ ও সময় ফরম্যাট করা (Formatting Date and Time):
    • format() মেথড ব্যবহার করে আপনি একটি LocalDateTime অবজেক্টকে একটি নির্দিষ্ট ফরম্যাটে কনভার্ট করতে পারেন।
  2. DateTimeFormatter দিয়ে তারিখ ও সময় স্ট্রিং পার্স করা (Parsing Date and Time):
    • parse() মেথড ব্যবহার করে একটি ফরম্যাট করা স্ট্রিংকে একটি LocalDateTime বা অন্য কোনো java.time অবজেক্টে রূপান্তর করা যায়।

DateTimeFormatter উদাহরণ:

1. DateTimeFormatter দিয়ে তারিখ ও সময় ফরম্যাট করা (Formatting):

import java.time.*;
import java.time.format.*;

public class DateTimeFormatterExample {
    public static void main(String[] args) {
        // Create a LocalDateTime object
        LocalDateTime dateTime = LocalDateTime.of(2024, 12, 23, 14, 30, 0); // 2024-12-23T14:30:00
        
        // Define a DateTimeFormatter
        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("dd-MM-yyyy HH:mm:ss");
        
        // Format the LocalDateTime object
        String formattedDateTime = dateTime.format(formatter);
        
        // Print the formatted date and time
        System.out.println("Formatted DateTime: " + formattedDateTime);
    }
}

আউটপুট:

Formatted DateTime: 23-12-2024 14:30:00

ব্যাখ্যা:

  • DateTimeFormatter.ofPattern("dd-MM-yyyy HH:mm:ss"): এটি একটি কাস্টম ফরম্যাট তৈরি করে। এখানে, dd দিন, MM মাস, yyyy বছর, HH ঘণ্টা, mm মিনিট এবং ss সেকেন্ডকে ফরম্যাট করে।
  • dateTime.format(formatter): LocalDateTime অবজেক্টকে নির্দিষ্ট ফরম্যাটে রূপান্তর করা হয়েছে।

2. DateTimeFormatter দিয়ে স্ট্রিং পার্স করা (Parsing):

DateTimeFormatter ব্যবহার করে আপনি একটি ফরম্যাট করা স্ট্রিংকে একটি LocalDateTime, LocalDate, বা LocalTime অবজেক্টে রূপান্তর করতে পারেন।

import java.time.*;
import java.time.format.*;

public class DateTimeParsingExample {
    public static void main(String[] args) {
        // Define a DateTimeFormatter with a pattern
        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("dd-MM-yyyy HH:mm:ss");
        
        // Parse a string into a LocalDateTime object
        String dateTimeString = "23-12-2024 14:30:00";
        LocalDateTime parsedDateTime = LocalDateTime.parse(dateTimeString, formatter);
        
        // Print the parsed LocalDateTime object
        System.out.println("Parsed LocalDateTime: " + parsedDateTime);
    }
}

আউটপুট:

Parsed LocalDateTime: 2024-12-23T14:30

ব্যাখ্যা:

  • DateTimeFormatter.ofPattern("dd-MM-yyyy HH:mm:ss"): এটি স্ট্রিংয়ের ফরম্যাট অনুযায়ী DateTimeFormatter তৈরি করে।
  • LocalDateTime.parse(dateTimeString, formatter): এটি dateTimeString স্ট্রিংকে LocalDateTime অবজেক্টে রূপান্তর করে।

3. ISO Format ব্যবহার করা:

ISO-8601 ফরম্যাট জাভাতে ডিফল্ট ফরম্যাট হিসেবে ব্যবহৃত হয়। আপনি DateTimeFormatter.ISO_LOCAL_DATE_TIME এবং অন্যান্য ISO ফরম্যাট ব্যবহার করে তারিখ ও সময় ফরম্যাট করতে পারেন।

ISO Format উদাহরণ:

import java.time.*;
import java.time.format.*;

public class IsoDateTimeFormatterExample {
    public static void main(String[] args) {
        // Create a LocalDateTime object
        LocalDateTime dateTime = LocalDateTime.of(2024, 12, 23, 14, 30, 0);
        
        // Format the LocalDateTime object using ISO format
        String isoFormattedDateTime = dateTime.format(DateTimeFormatter.ISO_LOCAL_DATE_TIME);
        
        // Print the ISO formatted date and time
        System.out.println("ISO Formatted DateTime: " + isoFormattedDateTime);
        
        // Parse a string into LocalDateTime using ISO format
        String isoDateTimeString = "2024-12-23T14:30:00";
        LocalDateTime parsedDateTime = LocalDateTime.parse(isoDateTimeString, DateTimeFormatter.ISO_LOCAL_DATE_TIME);
        
        // Print the parsed LocalDateTime object
        System.out.println("Parsed DateTime: " + parsedDateTime);
    }
}

আউটপুট:

ISO Formatted DateTime: 2024-12-23T14:30:00
Parsed DateTime: 2024-12-23T14:30

ব্যাখ্যা:

  • DateTimeFormatter.ISO_LOCAL_DATE_TIME: এটি একটি প্রি-ডিফাইনড ফরম্যাট, যা ISO 8601 ফরম্যাটে LocalDateTime ফরম্যাট করে।
  • LocalDateTime.parse(): এটি স্ট্রিংটিকে একটি LocalDateTime অবজেক্টে রূপান্তর করে।

4. ZonedDateTime ফরম্যাট এবং পার্সিং (Time Zone এর সাথে)

ZonedDateTime ক্লাস ব্যবহার করে আপনি টাইমজোন সহ তারিখ এবং সময় ফরম্যাট করতে পারেন। এখানে DateTimeFormatter এর মাধ্যমে ZonedDateTime ফরম্যাট এবং পার্সিং দেখানো হচ্ছে।

import java.time.*;
import java.time.format.*;

public class ZonedDateTimeFormatterExample {
    public static void main(String[] args) {
        // Create a ZonedDateTime object
        ZonedDateTime zonedDateTime = ZonedDateTime.of(2024, 12, 23, 14, 30, 0, 0, ZoneId.of("America/New_York"));
        
        // Format the ZonedDateTime object
        String zonedDateTimeString = zonedDateTime.format(DateTimeFormatter.ISO_ZONED_DATE_TIME);
        System.out.println("Formatted ZonedDateTime: " + zonedDateTimeString);
        
        // Parse a ZonedDateTime string
        String zonedDateTimeInput = "2024-12-23T14:30:00-05:00[America/New_York]";
        ZonedDateTime parsedZonedDateTime = ZonedDateTime.parse(zonedDateTimeInput, DateTimeFormatter.ISO_ZONED_DATE_TIME);
        System.out.println("Parsed ZonedDateTime: " + parsedZonedDateTime);
    }
}

আউটপুট:

Formatted ZonedDateTime: 2024-12-23T14:30:00-05:00[America/New_York]
Parsed ZonedDateTime: 2024-12-23T14:30:00-05:00[America/New_York]

ব্যাখ্যা:

  • DateTimeFormatter.ISO_ZONED_DATE_TIME: এটি ISO 8601 স্ট্যান্ডার্ডে টাইমজোন সহ ZonedDateTime ফরম্যাট করে।
  • ZonedDateTime.parse(): এটি টাইমজোনসহ স্ট্রিংটিকে ZonedDateTime অবজেক্টে রূপান্তর করে।

  • DateTimeFormatter ক্লাসটি Java 8-এ Date এবং Time এর ফরম্যাটিং এবং পার্সিং কাজকে সহজ এবং শক্তিশালী করে তোলে।
  • এটি ISO 8601 স্ট্যান্ডার্ড এবং কাস্টম ফরম্যাটের মাধ্যমে তারিখ ও সময়ের মান ফরম্যাট করতে এবং সেগুলোকে স্ট্রিং থেকে অবজেক্টে রূপান্তর করতে সহায়তা করে।
  • DateTimeFormatter.ofPattern() এর মাধ্যমে আপনি আপনার প্রয়োজন অনুযায়ী কাস্টম ফরম্যাট তৈরি করতে পারেন, এবং DateTimeFormatter.ISO_* এর মাধ্যমে স্ট্যান্ডার্ড ফরম্যাটে কাজ করতে পারেন।
Content added By
Promotion